class Storage {
	set(key: string, value: any) {
		try {
			uni.setStorageSync(key, JSON.stringify(value));
		} catch (err) {
			throw new Error(`setStorageSync error: ${err}`);
		}
	}

	get(key: string) {
		return  uni.getStorageSync(key)? JSON.parse(uni.getStorageSync(key)):undefined;

	}

	/**
	 * Delete cache based on key
	 * @param {string} key
	 * @memberof Cache
	 */
	remove(key: string) {
		uni.removeStorageSync(key);
	}

	/**
	 * Delete all caches of this instance
	 */
	clear(): void {
		uni.clearStorageSync();
	}
	
	/**
	 * 删除不知道名称key缓存
	 */
	clearNotKey(): void {
		uni.getStorageInfo({
			success: function (res) {
				// 过滤掉我们有用的缓存，不要删除
				let key = res.keys.filter((item)=>{
					if(item!='HBusername' && item!='HBpassword') {
						return item
					}
				}) 
				// 遍历缓存，判断时间，删除没有时间或60天前的缓存
				key.map((item)=>{
					let obj = uni.getStorageSync(item)
					obj = JSON.parse(obj)
					if(!obj.recordDate){ // 没有记录时间，那就是很久远的数据了，直接删除
						uni.removeStorageSync(item);
					}else{
						let sevenDaysAgo_time = dayjs().subtract(60, 'day') // 计算60天前的时间
						let isBefore =  dayjs(obj.recordDate).isBefore(sevenDaysAgo_time) // 判断传入时间是否在"7天前"之前
						if(isBefore){
							uni.removeStorageSync(item);
						}
					}
				})
			}
		});
	}
}

export default new Storage()